package com.vhans.db.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vhans.core.domain.BTag;
import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.vo.tag.TagQuizVO;
import com.vhans.db.model.vo.tag.TagRecordVO;
import com.vhans.db.model.vo.tag.TagOptionVO;
import com.vhans.db.model.vo.tag.TagVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 【标签】Mapper接口
 *
 * @author vhans
 * @date 2023-04-10
 */
@Repository
public interface BTagMapper extends BaseMapper<BTag> {
    /**
     * 查询标签列表
     *
     * @param condition 条件(名称,类型)
     * @return 标签VO
     */
    List<TagVO> selectTagVO(@Param("condition") ConditionDTO condition);

    /**
     * 根据标签名查询已有的标签
     *
     * @param tagNameList 标签名列表
     * @return 标签
     */
    List<BTag> selectTagList(List<String> tagNameList);

    /**
     * 根据记录id查询记录标签名称
     *
     * @param recordId 记录id
     * @return 记录标签名称
     */
    List<String> selectTagNameByRecordId(@Param("recordId") Integer recordId);

    /**
     * 根据题目id查询题目标签名称
     *
     * @param quizId 题目id
     * @return 题目标签名称
     */
    List<String> selectTagNameByQuizId(@Param("quizId") Integer quizId);

    /**
     * 根据记录id查询记录标签
     *
     * @param recordId 记录id
     * @return 记录标签
     */
    List<TagOptionVO> selectTagByRecordId(@Param("recordId") Integer recordId);

    /**
     * 根据题目id查询题目标签
     *
     * @param quizId 题目id
     * @return 题目标签
     */
    List<TagOptionVO> selectTagByQuizId(@Param("quizId") Integer quizId);

    /**
     * 查询记录标签列表
     *
     * @return 文章标签列表
     */
    List<TagRecordVO> selectTagRVOList();

    /**
     * 查询题目标签列表
     *
     * @return 题目标签列表
     */
    List<TagQuizVO> selectTagQVOList();

    /**
     * 查询标签选项
     *
     * @return 标签列表
     */
    List<TagOptionVO> selectTagOptionList();

    /**
     * 查询记录标签选项
     *
     * @return 标签列表
     */
    List<TagOptionVO> selectRTagOptionList();

    /**
     * 查询题目标签选项
     *
     * @return 标签列表
     */
    List<TagOptionVO> selectQTagOptionList();
}
